﻿<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>细线条模拟水滴波纹动画特效</title>
<style type="text/css">
:root {
}
body {
	background-image: radial-gradient(darkcyan, darkblue);
	margin: 0 auto;
	height: 100vw;
	width: 100vh;
	overflow: hidden;
}

.c {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%) rotateX(45deg);
	/* 	Native CSS properties don't support the customization of border-style. Therefore, we use a trick with an SVG image inside background-image property. 
	https://kovart.github.io/dashed-border-generator/
	*/
	/* 	background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='100' ry='100' stroke='aqua' stroke-width='1' stroke-dasharray='1' stroke-dashoffset='1' stroke-linecap='butt'/%3e%3c/svg%3e"); */
	border-radius: 50%;
	border: 1px dotted aqua;
	animation: dripBounce 5s infinite;
}
@keyframes dripBounce {
	/* 	0%{top:50%} */
	10% {
		top: calc(50% + 5px);
	}
	20% {
		top: calc(50% - 5px);
	}
	35% {
		top: 50%;
	}
}
.c1 {
	height: 10px;
	width: 20px;
	animation-delay: -10s;
}
.c2 {
	height: 20px;
	width: 40px;
	animation-delay: -9.8s;
	top: calc(50% + 1px);
}
.c3 {
	height: 30px;
	width: 60px;
	animation-delay: -9.6s;
	top: calc(50% + 2px);
}
.c4 {
	height: 40px;
	width: 80px;
	animation-delay: -9.4s;
	top: calc(50% + 3px);
}
.c5 {
	height: 50px;
	width: 100px;
	animation-delay: -9.2s;
	top: calc(50% + 4px);
}
.c6 {
	height: 60px;
	width: 120px;
	animation-delay: -9s;
	top: calc(50% + 5px);
}
.c7 {
	height: 70px;
	width: 140px;
	animation-delay: -8.8s;
	top: calc(50% + 6px);
}
.c8 {
	height: 80px;
	width: 160px;
	animation-delay: -8.6s;
	top: calc(50% + 7px);
}
.c9 {
	height: 90px;
	width: 180px;
	animation-delay: -8.4s;
	top: calc(50% + 8px);
}
.c10 {
	height: 100px;
	width: 200px;
	animation-delay: -8.2s;
	top: calc(50% + 9px);
}
.c11 {
	height: 110px;
	width: 220px;
	animation-delay: -8s;
	top: calc(50% + 10px);
}
.c12 {
	height: 120px;
	width: 240px;
	animation-delay: -7.8s;
	top: calc(50% + 11px);
}
.c13 {
	height: 130px;
	width: 260px;
	animation-delay: -7.6s;
	top: calc(50% + 12px);
}
.c14 {
	height: 140px;
	width: 280px;
	animation-delay: -7.4s;
	top: calc(50% + 13px);
}
.c15 {
	height: 150px;
	width: 300px;
	animation-delay: -7.2s;
	top: calc(50% + 14px);
}
.c16 {
	height: 160px;
	width: 320px;
	animation-delay: -7s;
	top: calc(50% + 15px);
}
.c17 {
	height: 170px;
	width: 340px;
	animation-delay: -6.8s;
	top: calc(50% + 16px);
}
.c18 {
	height: 180px;
	width: 360px;
	animation-delay: -6.6s;
	top: calc(50% + 17px);
}
.c19 {
	height: 190px;
	width: 380px;
	animation-delay: -6.4s;
	top: calc(50% + 18px);
}
.c20 {
	height: 200px;
	width: 400px;
	animation-delay: -6.2s;
	top: calc(50% + 19px);
}
.c21 {
	height: 210px;
	width: 420px;
	animation-delay: -6s;
	top: calc(50% + 20px);
}
.c22 {
	height: 220px;
	width: 440px;
	animation-delay: -5.8s;
	top: calc(50% + 21px);
}
.c23 {
	height: 230px;
	width: 460px;
	animation-delay: -5.6s;
	top: calc(50% + 22px);
}
.c24 {
	height: 240px;
	width: 480px;
	animation-delay: -5.4s;
	top: calc(50% + 23px);
}
.c25 {
	height: 250px;
	width: 500px;
	animation-delay: -5.2s;
	top: calc(50% + 24px);
}
.c26 {
	height: 260px;
	width: 520px;
	animation-delay: -5s;
	top: calc(50% + 25px);
}
.c27 {
	height: 270px;
	width: 540px;
	animation-delay: -4.8s;
	top: calc(50% + 26px);
}
.c28 {
	height: 280px;
	width: 560px;
	animation-delay: -4.6s;
	top: calc(50% + 27px);
}
.c29 {
	height: 290px;
	width: 580px;
	animation-delay: -4.4s;
	top: calc(50% + 28px);
}
.c30 {
	height: 300px;
	width: 600px;
	animation-delay: -4.2s;
	top: calc(50% + 29px);
}
.l {
	height: 20px;
	width: 1px;
	position: absolute;
	top: 0%;
	left: 50%;
	transform: translate(-50%, -50%);
	background: aqua;
	animation: drip 5s infinite;
	animation-delay: -10.3s;
}
@keyframes drip {
	0% {
		opacity: 1;
		top: 0%;
	}
	10% {
		opacity: 0.1;
		top: calc(50% + 10px);
	}
	100% {
		opacity: 0;
	}
}
</style>
</head>
<body>

<div class="c c1"></div>
<div class="c c2"></div>
<div class="c c3"></div>
<div class="c c4"></div>
<div class="c c5"></div>
<div class="c c6"></div>
<div class="c c7"></div>
<div class="c c8"></div>
<div class="c c9"></div>
<div class="c c10"></div>
<div class="c c11"></div>
<div class="c c12"></div>
<div class="c c13"></div>
<div class="c c14"></div>
<div class="c c15"></div>
<div class="c c16"></div>
<div class="c c17"></div>
<div class="c c18"></div>
<div class="c c19"></div>
<div class="c c20"></div>
<div class="c c21"></div>
<div class="c c22"></div>
<div class="c c23"></div>
<div class="c c24"></div>
<div class="c c25"></div>
<div class="c c26"></div>
<div class="c c27"></div>
<div class="c c28"></div>
<div class="c c29"></div>
<div class="c c30"></div>
<div class="l"></div>

</body>
</html>